package com.wangcanxuan.www.service;

import com.wangcanxuan.www.annotation.Transaction;
import com.wangcanxuan.www.entity.dto.ResultInfo;
import com.wangcanxuan.www.entity.po.Task;
import com.wangcanxuan.www.entity.po.User;

import java.util.List;

/**
 * 任务业务类
 *
 * @author HHLJ
 * @date 2022/04/08
 */
public interface TaskService {

    /**
     * 实现获得任务列表业务
     *
     * @param tribeId   部落id
     * @param pageCount 页面数
     * @return {@link ResultInfo}<{@link List}<{@link Task}>>
     */
    ResultInfo<List<Task>> selectTaskList(String tribeId, int pageCount);

    /**
     * 实现发布任务业务
     *
     * @param taskName    任务名称
     * @param taskContent 任务内容
     * @param level       水平
     * @param user        用户
     * @return {@link ResultInfo}<{@link ?}>
     */
    @Transaction
    ResultInfo<String> publishTask(String taskName, String taskContent, int level, User user);

    /**
     * 实现下架任务业务
     *
     * @param chooseTaskName 选择任务名称
     * @param tribeId        部落id
     * @return {@link ResultInfo}<{@link ?}>
     */
    @Transaction
    ResultInfo<String> shelvesTask(String chooseTaskName, String tribeId);

    /**
     * 实现获得当前用户的任务列表业务
     *
     * @param user 用户
     * @return {@link ResultInfo}<{@link List}<{@link Task}>>
     */
    ResultInfo<List<Task>> selectTaskListByUser(User user);

    /**
     * 实现接受任务业务
     *
     * @param user           用户
     * @param chooseTaskName 选择任务名称
     * @return {@link ResultInfo}<{@link ?}>
     */
    @Transaction
    ResultInfo<String> acceptTask(User user, String chooseTaskName);

}
